<!doctype html>
<html lang="en">
<head>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>file文件操作</title>
   <style>
       body {
           background: #5eead4; /* 背景颜色 */
           color: #000000; /* 文字颜色 */
           cursor: default;
       }
       .sidebar {
           width: 250px; /* 侧边栏宽度 */
           height: 100vh; /* 视口高度 */
           background-color: #f4f4f4; /* 背景颜色 */
           position: fixed; /* 固定定位 */
           left: 0; /* 靠左 */
           top: 0; /* 靠顶 */
           padding: 20px; /* 内边距 */

           box-shadow: 2px 0 5px rgba(0,0,0,0.1); /* 右阴影效果 */
       }
       .text {
           margin-left: 260px; /* 与侧边栏宽度相同，避免内容被遮挡 */
       }
       p {
           margin: 0;
           text-align: center;
       }
       h1,h2{
           margin-left: 260px;
           text-align: center;
       }
       table, th, td {
           border: 1px solid black;
           border-collapse: collapse; /* 合并边框 */
           padding: 1px; /* 内边距 */
           margin-left: 260px; /* 左外边距 */

       }
       th, td {
           text-align: center;

       }
       .text_show {
           width: 100%;
           height: 100px;

       }
       pre {
           padding: 10px;
           margin: 20px 0;
           background-color: #f9f9f9; /* 背景颜色 */
           border: 1px solid #1f2937; /* 边框颜色 */
           font-size: 1rem;
           width: 100%;
           color: #2c3e50;
           text-align: center;
       }
       .text_content .text_content_list{
           width: 80%;
           /*margin: 0 auto;*/
           text-align: center;
           flex: 1 1 200px;
           margin: 10px;
           box-sizing: border-box;
           gap: 5px;
           flex-wrap: wrap;


       }
       textarea {
           width: 100%;
       }
       .text_content_list {
           display: flex; /* 启用flex布局 */
           flex-wrap: wrap;
           text-align: center;

       }
       aside {
           width: clamp(200px,20vw,300px);
           height: auto;
           overflow-wrap: break-word;
       }
   </style>

</head>
<body class="box">

<div class="sidebar">

<!--        侧边栏-->

<aside>

    <ol>
        <li class="master_grid_layout"><a href="../linux.html"><del>首页</del></a></li>
        <li><a href="#file_permission">权限命令</a></li>
        <li><a href="#id_tree">目录树 Tree</a></li>
        <li><a href="#file_permission">文件权限</a></li>
        <li><a href="#trash_cli">trash-cli 回收站</a></li>
        <li><a href="#ID_selector">sed 文本编辑</a></li>
        <li><a href="#id_pandoc">pandoc 文档转换</a></li>

    </ol>
    <ul>
        <li><a href="#id_find">find 查找文件</a></li>
        <li><a href="#id_vimdiff">vimdiff 比较文件差异</a></li>
        <li><a href="#id_patch">patch 应用差异文件</a></li>
        <li><a href="#id_cmp">cmp 比较文件差异</a></li>



        <li><a href="#id_cat">cat 查看</a></li>

        <li><a href="#id_nl">nl 显示行号</a></li>
        <li><a href="#id_less">less往前翻页</a></li>
        <li><a href="#id_head">head 显示文件头几行</a></li>
        <li><a href="#id_more">more 翻页查看</a></li>
        <li><a href="#id_tail">tail 显示文件尾几行</a></li>
        <li><a href="#id_tac">tac 倒序查看</a></li>

    </ul>
</aside>
</div>

<!-- 页面主要内容区 -->
<main class="text">
    <div class="text_content">
        <h1 id="file_permission">文件权限</h1>
        <textarea>
        chgrp : 改变文件所属群组
        chown ： 改变文件所有人
    </textarea>
        <pre>
        -rwx rwx rwx
这九个权限是三个三个一组的！其中，
我们可以使用数字来代表各个权限，各权限的分数对照
    </pre>
        <h2>符号法</h2>

        <table>
            <tr>
                <th>符号</th>
                <th>作用</th>
            </tr>
            <tr>
                <td>+</td>
                <td>添加某个权限</td>
            </tr>
            <tr>
                <td>-</td>
                <td>取消某个权限</td>
            </tr>
            <tr>
                <td>=</td>
                <td>赋予给定权限并取消其他所有权限（如果有的话）<br>设置mode所表示的权限可用下述字母的任意组合</td>
            </tr>
            <tr>
                <td>r</td>
                <td>可读</td>
            </tr>
            <tr>
                <td>w</td>
                <td>可写</td>
            </tr>
            <tr>
                <td>x</td>
                <td>可执行</td>
            </tr>
            <tr>
                <td>X</td>
                <td>只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性</td>
            </tr>
            <tr>
                <td>s</td>
                <td>在文件执行时把进程的属主或组ID置为该文件的文件属主<br>方式“u＋s”设置文件的用户ID位，“g＋s”设置组ID位
                </td>
            </tr>
            <tr>
                <td>t</td>
                <td>保存程序的文本到交换设备上</td>
            </tr>
            <tr>
                <td>u</td>
                <td>与文件属主拥有一样的权限</td>
            </tr>
            <tr>
                <td>g</td>
                <td>与和文件属主同组的用户拥有一样的权限</td>
            </tr>
            <tr>
                <td>o</td>
                <td>与其他用户拥有一样的权限</td>
            </tr>
            <tr>
                <td>c</td>
                <td>若该档案权限确实已经更改，才显示其更改动作</td>
            </tr>
            <tr>
                <td>f</td>
                <td>若该档案权限无法被更改也不要显示错误讯息</td>
            </tr>
            <tr>
                <td>v</td>
                <td>显示权限变更的详细资料</td>
            </tr>
            <tr>
                <td>R</td>
                <td>对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)</td>
            </tr>
        </table>

        <h1 id="trash_cli">trash-cli 回收站</h1>
        <p>回收站路径　　~/.local/share/Trash/info</p>
        <table>
            <thead>
            <tr>
                <th>命令</th>
                <th>功能</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>trash-put</td>
                <td>将文件放入回收站</td>
            </tr>
            <tr>
                <td>trash-list</td>
                <td>查看回收站文件列表</td>
            </tr>
            <tr>
                <td>trash-empty $数字</td>
                <td>清空回收站</td>
            </tr>
            <tr>
                <td>trash-restore</td>
                <td>交互恢复回收站文件</td>
            </tr>
            <tr>
                <td>trash-rm</td>
                <td>彻底删除回收站文件</td>
            </tr>
            <tr>
                <td>autotrash -d 30</td>
                <td>删除超过 30 天的文件</td>
            </tr>
            </tbody>
        </table>

        <h1 id="id_tree">目录树 Tree</h1>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>结构</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-a</td>
                <td>显示所有文件和目录</td>
            </tr>
            <tr>
                <td>-d</td>
                <td>只显示目录</td>
            </tr>
            <tr>
                <td>-f</td>
                <td>显示完整的路径</td>
            </tr>
            <tr>
                <td>-L</td>
                <td>显示目录层级</td>
            </tr>
            <tr>
                <td>-P</td>
                <td>后面可以跟模式 不显示匹配模式的文件或目录</td>
            </tr>
            <tr>
                <td>-C</td>
                <td>使用颜色区分文件类型</td>
            </tr>
            <tr>
                <td>--dirsfirst</td>
                <td>在文件和目录之前显示</td>
            </tr>
            </tbody>
        </table>
    </div>
    <div class="text_content_list">
    <div class="text_content">
        <h1 id="id_cat">cat 查看</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>描述</th>
            </tr>
            <tr>
                <td>-A</td>
                <td>相当于 -vET 的整合选项，可列出一些特殊字符而不是空白而已</td>
            </tr>
            <tr>
                <td>-b</td>
                <td>列出行号，仅针对非空白行做行号显示，空白行不标行号！</td>
            </tr>
            <tr>
                <td>-E</td>
                <td>将结尾的断行字节 $ 显示出来</td>
            </tr>
            <tr>
                <td>-n</td>
                <td>列印出行号，连同空白行也会有行号，与 -b 的选项不同</td>
            </tr>
            <tr>
                <td>-T</td>
                <td>将 [tab] 按键以 ^I 显示出来</td>
            </tr>
            <tr>
                <td>-v</td>
                <td>显示隐藏字符，但不显示行尾的 $ 符号</td>
            </tr>
            <tr>
                <td>-u</td>
                <td>不缓冲输出（在某些系统中可能不可用）</td>
            </tr>
            <tr>
                <td>-n</td>
                <td>对所有输出行进行编号</td>
            </tr>
            <tr>
                <td>-s</td>
                <td>按顺序压缩多个连续的空行</td>
            </tr>
            <tr>
                <td>-t</td>
                <td>将 [tab] 按键以 ^I 显示出来</td>
            </tr>
        </table>
    </div>
    <div class="text_content">
        <h1 id="id_tac">tac 倒序查看</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            <tr>
                <td>-b, --before</td>
                <td>在行前添加分隔符</td>
            </tr>
            <tr>
                <td>-r, --regex</td>
                <td>将分隔符作为正则表达式处理</td>
            </tr>
            <tr>
                <td>-s, --separator=STRING</td>
                <td>使用指定字符串作为分隔符，代替默认的换行符</td>
            </tr>
        </table>
    </div>
    <div class="text_content">
        <h1 id="id_nl">nl 显示行号</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            <tr>
                <td>-b, --body-numbering</td>
                <td>显示行号，从 1 开始</td>
            </tr>
        </table>
    </div>
    <div class="text_content">
        <h1 id="id_less">less往前翻页</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            <tr>
                <td>-b, --body-numbering</td>
                <td>显示行号，从 1 开始</td>
            </tr>
        </table>
    </div>

    <div class="text_content">
        <h1 id="id_head">head 显示文件头几行</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            <tr>
                <td>-n 或 --lines</td>
                <td>指定要显示的行数，默认为10行，可以使用 +N 或 -N 来指定从第N行开始显示或显示前N行</td>
            </tr>
            <tr>
                <td>-c 或 --bytes</td>
                <td>指定要显示的字节数，可以使用 +N 或 -N 来指定从第N字节开始显示或显示前N字节</td>
            </tr>
            <tr>
                <td>-q 或 --quiet</td>
                <td>不显示文件名（当处理多个文件时）</td>
            </tr>
            <tr>
                <td>-v 或 --verbose</td>
                <td>始终显示文件名（即使只有一个文件）</td>
            </tr>
        </table>
    </div>
    <div class="text_content">
        <h1 id="id_more">more 翻页查看</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            <tr>
                <td>空白键 (space)</td>
                <td>代表向下翻一页</td>
            </tr>
            <tr>
                <td>Enter</td>
                <td>代表向下翻『一行』</td>
            </tr>
            <tr>
                <td>/字串</td>
                <td>代表在这个显示的内容当中，向下搜寻『字串』这个关键字</td>
            </tr>
            <tr>
                <td>:f</td>
                <td>立刻显示出档名以及目前显示的行数</td>
            </tr>
            <tr>
                <td>q</td>
                <td>代表立刻离开 more ，不再显示该文件内容</td>
            </tr>
            <tr>
                <td>b 或 [ctrl]-b</td>
                <td>代表往回翻页，不过这动作只对文件有用，对管线无用</td>
            </tr>
        </table>
    </div>

    <div class="text_content">
        <h1 id="id_tail">tail 显示文件尾几行</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            <tr>
                <td>-n 或 --lines</td>
                <td>指定显示的行数，默认为 10 行，可以使用 +N 或 -N 来指定从第 N 行开始显示或显示最后 N 行</td>
            </tr>
            <tr>
                <td>-c 或 --bytes</td>
                <td>指定显示的字节数，可以使用 +N 或 -N 来指定从第 N 字节开始显示或显示最后 N 字节</td>
            </tr>
            <tr>
                <td>-f 或 --follow</td>
                <td>持续跟踪文件的更新，常用于查看日志文件的实时更新</td>
            </tr>
            <tr>
                <td>-q 或 --quiet</td>
                <td>不显示文件名（当处理多个文件时）</td>
            </tr>
            <tr>
                <td>-v 或 --verbose</td>
                <td>始终显示文件名（即使只有一个文件）</td>
            </tr>
            <tr>
                <td>-s 或 --sleep-interval</td>
                <td>与 -f 参数结合使用，指定更新检查的时间间隔（秒）</td>
            </tr>
        </table>
    </div>
    <div class="text_content">
        <h1>WC 统计文件行数、字数、字节数</h1>
        <table>
            <thead>
            <tr>
                <th>用法</th>
                <th>列子</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-l</td>
                <td>统计行数</td>
            </tr>
            <tr>
                <td>-w</td>
                <td>统计单词数</td>
            </tr>
            <tr>
                <td>-c</td>
                <td>统计字节数</td>
            </tr>
            <tr>
                <td>-L</td>
                <td>打印最长行的长度</td>
            </tr>
            <tr>
                <td>-m</td>
                <td>统计字符数</td>
            </tr>
            </tbody>
        </table>
    </div>

</div>
    <div class="text_content">
        <h1 id="ID_selector">sed 文本编辑</h1>
        <table>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            <tr>
                <td>sed -e 's/old/new/' -e 's/foo/bar/' input.txt</td>
                <td>替换多个字符串</td>
            </tr>
            <tr>
                <td>sed -f commands.sed input.txt</td>
                <td>从文件中读取命令并执行</td>
            </tr>
            <tr>
                <td>sed -I 's/old/new/' input.txt</td>
                <td>直接修改文件内容</td>
            </tr>
            <tr>
                <td>sed -n 's/old/new/p' input.txt</td>
                <td>只打印匹配行</td>
            </tr>
            <tr>
                <td>sed -r 's/(old)/\1-new/' input.txt</td>
                <td>扩展正则表达式</td>
            </tr>
            <tr>
                <td>sed -i -c 's/old/new/' input.txt</td>
                <td>将输出写入指定文件，而不是覆盖原文件</td>
            </tr>
        </table>
    </div>
    <div class="text_content">
        <h1 id="id_compress">压缩解压命令</h1>
        <table>
            <thead>
            <tr>
                <th>工具/参数</th>
                <th>功能/说明</th>
                <th>示例</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-d</td>
                <td>解压</td>
                <td></td>
            </tr>
            <tr>
                <td>-f</td>
                <td>强制压缩</td>
                <td></td>
            </tr>
            <tr>
                <td>-k</td>
                <td>压缩文件保留</td>
                <td></td>
            </tr>
            <tr>
                <td>-r</td>
                <td>递归压缩所有</td>
                <td></td>
            </tr>
            <tr>
                <td>-9</td>
                <td>极限</td>
                <td></td>
            </tr>
            <tr>
                <td>-1</td>
                <td>正常压缩</td>
                <td></td>
            </tr>
            <tr>
                <td colspan="3"><h2>tar</h2></td>
            </tr>
            <tr>
                <td>-c</td>
                <td>创建一个新的归档文件（压缩包）。</td>
                <td></td>
            </tr>
            <tr>
                <td>-x</td>
                <td>解压归档文件（解压缩）。</td>
                <td></td>
            </tr>
            <tr>
                <td>-t</td>
                <td>查看归档文件中的内容（列出文件列表）。</td>
                <td></td>
            </tr>
            <tr>
                <td>-f</td>
                <td>指定归档文件的文件名。</td>
                <td></td>
            </tr>
            <tr>
                <td>-z</td>
                <td>通过 gzip 压缩或解压归档文件，常与 -c 或 -x 一起使用。</td>
                <td></td>
            </tr>
            <tr>
                <td>-j</td>
                <td>通过 bzip2 压缩或解压归档文件，常与 -c 或 -x 一起使用。</td>
                <td></td>
            </tr>
            <tr>
                <td>-J</td>
                <td>通过 xz 压缩或解压归档文件，常与 -c 或 -x 一起使用。</td>
                <td></td>
            </tr>
            <tr>
                <td>-v</td>
                <td>显示命令执行过程中的详细信息（verbose 模式）。</td>
                <td></td>
            </tr>
            <tr>
                <td>-p</td>
                <td>保留文件的权限和属性（在解压时）。</td>
                <td></td>
            </tr>
            <tr>
                <td>-C</td>
                <td>指定解压的目标目录，常与 -x 一起使用。</td>
                <td></td>
            </tr>
            <tr>
                <td>-k</td>
                <td>保留已存在的文件，不覆盖（在解压时）。</td>
                <td></td>
            </tr>
            <tr>
                <td>--recursive-unlink</td>
                <td>删除目录中多余的文件</td>
                <td></td>
            </tr>
            <tr>
                <td>--preserve-permissions</td>
                <td>保留文件的权限和属性</td>
                <td></td>
            </tr>
            <tr>
                <td>压缩</td>
                <td>.tar.bz2 压缩</td>
                <td>tar cvf FileName.tar DirName</td>
            </tr>
            <tr>
                <td>压缩</td>
                <td>.tar.gz 压缩</td>
                <td>tar zcvf FileName.tar.gz DirName</td>
            </tr>
            <tr>
                <td>压缩</td>
                <td>.tar 压缩</td>
                <td>tar cvf FileName.tar DirName</td>
            </tr>
            <tr>
                <td>解压</td>
                <td>.tar 解包</td>
                <td>tar -xvf FileName.tar</td>
            </tr>
            <tr>
                <td>解压</td>
                <td>.gz 解压</td>
                <td>tar -xzvf FileName.tar.gz</td>
            </tr>
            <tr>
                <td>解压</td>
                <td>.tar.bz2 解压</td>
                <td>tar -xjvf FileName.tar.bz2</td>
            </tr>
            <tr>
                <td colspan="3"><h2>rar</h2></td>
            </tr>
            <tr>
                <td>压缩</td>
                <td>.rar 压缩</td>
                <td>rar a FileName.rar DirName</td>
            </tr>
            <tr>
                <td>解压</td>
                <td>.rar 解压</td>
                <td>rar x FileName.rar DirName</td>
            </tr>
            <tr>
                <td colspan="3"><h2>gunzip/gzip/zip</h2></td>
            </tr>
            <tr>
                <td>gunzip压缩</td>
                <td>.gz 压缩</td>
                <td>gunzip FileName.gz</td>
            </tr>
            <tr>
                <td>gunzip解压</td>
                <td>.gz 解压</td>
                <td>gunzip FileName.gz</td>
            </tr>
            <tr>
                <td>zip压缩</td>
                <td>.zip 压缩</td>
                <td>zip -r FileName.zip DirName</td>
            </tr>
            <tr>
                <td>zip解压</td>
                <td>.zip 解压</td>
                <td>zip -r FileName.zip</td>
            </tr>
            <tr>
                <td colspan="3"><h2>bzip2</h2></td>
            </tr>
            <tr>
                <td>bzip2压缩</td>
                <td>.bz2 压缩</td>
                <td>bzip2 -z FileName.bz2</td>
            </tr>
            <tr>
                <td>bzip2解压</td>
                <td>.bz2 解压</td>
                <td>bzip2 -d FileName.bz2</td>
            </tr>
            <tr>
                <td colspan="3"><h2>7z</h2></td>
            </tr>
            <tr>
                <td>7z压缩</td>
                <td>.7z 压缩</td>
                <td>7za a FileName.7z DirName</td>
            </tr>
            <tr>
                <td>7z解压</td>
                <td>.7z 解压</td>
                <td>7za x FileName.7z</td>
            </tr>
            </tbody>
        </table>
    </div>
    <h1 id="id_find">find 搜索查找</h1>
    <table>
        <thead>
        <tr>
            <th>用法</th>
            <th>列子</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>-name</td>
            <td>匹配名称</td>
        </tr>
        <tr>
            <td>-perm</td>
            <td>匹配权限（mode 为完全匹配，-mode 为包含即可）</td>
        </tr>
        <tr>
            <td>-user</td>
            <td>匹配所有者</td>
        </tr>
        <tr>
            <td>-group</td>
            <td>匹配所有组</td>
        </tr>
        <tr>
            <td>-mtime</td>
            <td>-n +n 匹配修改内容的时间（-n 指 n 天以内，+n 指 n 天以前）</td>
        </tr>
        <tr>
            <td>-atime</td>
            <td>-n +n 匹配访问文件的时间（-n 指 n 天以内，+n 指 n 天以前）</td>
        </tr>
        <tr>
            <td>-ctime</td>
            <td>-n +n 匹配修改文件权限的时间（-n 指 n 天以内，+n 指 n 天以前）</td>
        </tr>
        <tr>
            <td>-nouser</td>
            <td>匹配无所有者的文件</td>
        </tr>
        <tr>
            <td>-nogroup</td>
            <td>匹配无所有组的文件</td>
        </tr>
        <tr>
            <td>-newer</td>
            <td>f1 !f2 匹配比文件 f1 新但比 f2 旧的文件</td>
        </tr>
        <tr>
            <td>--type</td>
            <td>b/d/c/p/l/f 匹配文件类型（后面的字幕参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件）</td>
        </tr>
        <tr>
            <td>-size</td>
            <td>匹配文件的大小（+50KB 为查找超过 50KB 的文件，而-50KB 为查找小于 50KB 的文件）</td>
        </tr>
        <tr>
            <td>-prune</td>
            <td>忽略某个目录 -exec …… {}\; 后面可跟用于进一步处理搜索结果的命令（下文会有演示）</td>
        </tr>
        </tbody>
    </table>
    <div class="text_content">
        <h1 id="id_awk">awk 基本用法</h1>
        <pre>
awk [选项] '模式 {动作}' 输入文件
</pre>
        <h2>打印匹配特定模式的行</h2>
        <pre>
awk '/John/ {print}' file.txt
</pre>
        <h2>条件判断</h2>
        <pre>
awk '$2 > 100 {print}' file.txt
</pre>
        <h2>统计行数</h2>
        <pre>
awk 'END {print NR}' file.txt
</pre>
        <h2>格式化输出</h2>
        <pre>
awk '{printf "%-10s %-10s\n", $1, $2}' file.txt
</pre>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>功能</th>
                <th>例子</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-F</td>
                <td>指定字段分隔符，默认为任意空白字符（空格或制表符）</td>
                <td><code>awk -F, '{print $1, $3}' file.csv</code></td>
            </tr>
            <tr>
                <td>-f</td>
                <td>从文件中读取 awk 程序</td>
                <td><code>awk -f myprogram.awk file.txt</code></td>
            </tr>
            <tr>
                <td>-p</td>
                <td>打印模式匹配的行（默认行为）</td>
                <td><code>awk -p '{print $1, $3}' file.csv</code></td>
            </tr>
            <tr>
                <td>-s</td>
                <td>静默模式，不打印任何内容，除非显式调用 print</td>
                <td><code>awk -s '{print $1, $3}' file.csv</code></td>
            </tr>
            <tr>
                <td>-v</td>
                <td>设置变量的初始值</td>
                <td><code>awk -v threshold=100 '$2 > threshold {print}' file.txt</code></td>
            </tr>
            <tr>
                <td>patten</td>
                <td>表示 awk 在数据中查找的内容，就是匹配模式</td>
                <td></td>
            </tr>
            <tr>
                <td>action</td>
                <td>表示当 awk 在文件中的当前行找到匹配 patten 的内容时，执行相应的操作</td>
                <td></td>
            </tr>
            </tbody>
        </table>

        <h2 id="id_awk_builtin">常用内置变量</h2>
        <table>
            <thead>
            <tr>
                <th>变量</th>
                <th>功能</th>
                <th>例子</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>$0</td>
                <td>当前行的完整内容</td>
                <td><code>awk '{print $0}' file.txt</code></td>
            </tr>
            <tr>
                <td>$1, $2, ...</td>
                <td>当前行的第1个字段,第2个字段等</td>
                <td><code>awk '{print $2}' file.txt</code></td>
            </tr>
            <tr>
                <td>NF</td>
                <td>当前行的字段数</td>
                <td><code>awk '{print NF}' file.txt</code></td>
            </tr>
            <tr>
                <td>NR</td>
                <td>当前行号（从1开始）</td>
                <td><code>awk '{print NR, $0}' file.txt</code></td>
            </tr>
            <tr>
                <td>FS</td>
                <td>字段分隔符（默认为空白字符）</td>
                <td><code>awk -F: '{print $1, $7}' file.txt</code></td>
            </tr>
            <tr>
                <td>RS</td>
                <td>记录分隔符（默认为换行符）</td>
                <td><code>awk 'BEGIN{RS=":"}{print $1, $7}' file.txt</code></td>
            </tr>
            <tr>
                <td>OFS</td>
                <td>输出字段分隔符（默认为空格）</td>
                <td><code>awk -F: '{print $1, $7}' file.txt</code></td>
            </tr>
            <tr>
                <td>ORS</td>
                <td>输出记录分隔符（默认为换行符）</td>
                <td><code>awk -F: '{print $1, $7}' file.txt</code></td>
            </tr>
            <tr>
                <td>FILENAME</td>
                <td>当前文件名</td>
                <td><code>awk '{print FILENAME}' file1.txt file2.txt</code></td>
            </tr>
            <tr>
                <td>CONVFMT</td>
                <td>数字的输出格式</td>
                <td><code>awk '{print 1234567890}'</code></td>
            </tr>
            <tr>
                <td>ENVIRON</td>
                <td>环境变量</td>
                <td><code>awk '{print ENVIRON["PATH"]}'</code></td>
            </tr>
            <tr>
                <td>ARGIND</td>
                <td>当前参数的索引</td>
                <td><code>awk 'BEGIN{print "参数个数:"ARGC}'</code></td>
            </tr>
            <tr>
                <td>ARGV</td>
                <td>当前参数列表</td>
                <td><code>awk 'BEGIN{for(i=1;i<=ARGC;i++) print "参数"i":"ARGV[i]}'</code></td>
            </tr>
            <tr>
                <td>RSTART</td>
                <td>匹配模式的开始位置</td>
                <td><code>awk '/pattern/{RSTART}'</code></td>
            </tr>
            <tr>
                <td>RLENGTH</td>
                <td>匹配模式的长度</td>
                <td><code>awk '/pattern/{RLENGTH}'</code></td>
            </tr>
            <tr>
                <td>SUBSEP</td>
                <td>数组的分隔符</td>
                <td><code>awk -F: '{print $1, $7}' file.txt</code></td>
            </tr>
            <tr>
                <td>CONTEXT</td>
                <td>打印当前行的上下文</td>
                <td><code>awk -v CONTEXT=2 '{print NR, $0, CONTEXT"行上下文"}'</code></td>
            </tr>
            <tr>
                <td>CONTEXT_PREV</td>
                <td>打印前一行的上下文</td>
                <td><code>awk -v CONTEXT=2 '{print NR, $0, CONTEXT_PREV"行上下文"}'</code></td>
            </tr>
            <tr>
                <td>CONTEXT_NEXT</td>
                <td>打印后一行的上下文</td>
                <td><code>awk -v CONTEXT=2 '{print NR, $0, CONTEXT_NEXT"行上下文"}'</code></td>
            </tr>
            <tr>
                <td>CONTEXT_FIRST</td>
                <td>打印第一行的上下文</td>
                <td><code>awk -v CONTEXT=2 '{print NR, $0, CONTEXT_FIRST"行上下文"}'</code></td>
            </tr>
            </tbody>
        </table>
    </div>
    <div>
        <h1 id="id_tee">tee</h1>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-a 或 --append</td>
                <td>将输出追加到文件末尾，而不是覆盖文件</td>
            </tr>
            <tr>
                <td>-i 或 --ignore-interrupts</td>
                <td>忽略中断信号，避免因中断信号导致的写入中断</td>
            </tr>
            <tr>
                <td>-p</td>
                <td>在写入非管道文件时输出诊断信息</td>
            </tr>
            </tbody>
        </table>
    </div>
    <div>
        <h1 id="id_diff">diff 文件对比</h1>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-d</td>
                <td>打开 diff 模式</td>
            </tr>
            <tr>
                <td>-o</td>
                <td>水平分屏显示</td>
            </tr>
            <tr>
                <td>-O</td>
                <td>垂直分屏显示</td>
            </tr>
            <tr>
                <td>-c</td>
                <td>打开差异比较模式</td>
            </tr>
            <tr>
                <td>-l</td>
                <td>显示行号</td>
            </tr>
            </tbody>
        </table>

        <h3 id="id_vimdiff_shortcut">vimdiff快捷键</h3>
        <table>
            <thead>
            <tr>
                <th>快捷键</th>
                <th>功能</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>Ctrl+w+w</td>
                <td>使用快捷键切换</td>
            </tr>
            <tr>
                <td>Ctrl+w h/j/k/l</td>
                <td>分别跳转到左/下/上/右窗口</td>
            </tr>
            <tr>
                <td>:diffgtnext</td>
                <td>查看下一个差异</td>
            </tr>
            <tr>
                <td>diffgtprevious</td>
                <td>查看上一个差异</td>
            </tr>
            <tr>
                <td>:diffput</td>
                <td>将当前窗口的差异复制到另一个窗口</td>
            </tr>
            <tr>
                <td>:diffget</td>
                <td>将另一个窗口的差异复制到当前窗口</td>
            </tr>
            </tbody>
        </table>

        <h2 id="id_vimdiff">vimdiff</h2>
        <p>vimdiff 是 vim 编辑器的一个插件，用于对比两个文件的差异。</p>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-i</td>
                <td>忽略大小写</td>
            </tr>
            <tr>
                <td>-q</td>
                <td>静默模式</td>
            </tr>
            <tr>
                <td>-r</td>
                <td>递归比较目录</td>
            </tr>
            <tr>
                <td>-u</td>
                <td>输出不一致处</td>
            </tr>
            <tr>
                <td>-w</td>
                <td>宽松模式</td>
            </tr>
            </tbody>
        </table>
        <h1 id="id_cmp">cmp</h1>
        <p>cmp 命令用于比较两个文件的内容是否相同。</p>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>-i</td>
                <td>忽略大小写</td>
            </tr>
            <tr>
                <td>-s</td>
                <td>忽略空白字符</td>
            </tr>
            <tr>
                <td>-l</td>
                <td>显示行号</td>
            </tr>
            <tr>
                <td>-b</td>
                <td>忽略不可打印字符</td>
            </tr>
            </tbody>
        </table>
    </div>
    <div>
        <h1 id="id_pandoc">pandoc 文档转换</h1>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>功能</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>--list-input-formats</td>
                <td>列出支持的输入格式</td>
            </tr>
            <tr>
                <td>--list-output-formats</td>
                <td>列出支持的输出格式</td>
            </tr>
            <tr>
                <td>-f 或 --from</td>
                <td>指定输入文件的格式</td>
            </tr>
            <tr>
                <td>-t 或 --to</td>
                <td>指定输出文件的格式</td>
            </tr>
            <tr>
                <td>-o 或 --output</td>
                <td>指定输出文件的路径</td>
            </tr>
            <tr>
                <td>--css</td>
                <td>指定用于 HTML 输出的 CSS 文件</td>
            </tr>
            <tr>
                <td>--template</td>
                <td>指定自定义模板文件</td>
            </tr>
            <tr>
                <td>--standalone 或 -s</td>
                <td>生成独立文档（包含文档头部和尾部）</td>
            </tr>
            <tr>
                <td>--toc 或 --table-of-contents</td>
                <td>生成目录</td>
            </tr>
            <tr>
                <td>--number-sections</td>
                <td>对文档的章节进行编号</td>
            </tr>
            <tr>
                <td>--highlight-style</td>
                <td>指定代码高亮的样式</td>
            </tr>
            <tr>
                <td>--include-in-header</td>
                <td>在文档头部包含指定的文件内容</td>
            </tr>
            <tr>
                <td>--include-before-body</td>
                <td>在文档正文之前包含指定的文件内容</td>
            </tr>
            <tr>
                <td>--include-after-body</td>
                <td>在文档正文之后包含指定的文件内容</td>
            </tr>
            </tbody>
        </table>
        <h1 id="id_patch">patch 应用差异文件</h1>
        <p>patch 命令用于应用差异文件到原始文件，从而生成新的文件。</p>
        <textarea>
            patch [选项] [原始文件] [补丁文件]
        </textarea>
        <table>
            <thead>
            <tr>
                <th>参数</th>
                <th>描述</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td><code>-b</code> 或 <code>--backup</code></td>
                <td>在打补丁前为每个修改的文件创建备份。默认情况下，备份文件将带有后缀 <code>.orig</code></td>
            </tr>
            <tr>
                <td><code>-p数字</code></td>
                <td>去除补丁文件中的路径层级。<br>例如，如果补丁文件中指定了完整路径 <code>/path/to/file.txt</code>，而你想忽略最前面的两个目录层级，则可以使用 <code>-p2</code>，这样就只会处理 <code>file.txt</code></td>
            </tr>
            <tr>
                <td><code>-R</code> 或 <code>--reverse</code></td>
                <td>反向应用补丁，即撤销补丁所做的更改。</td>
            </tr>
            <tr>
                <td><code>-i 补丁文件</code></td>
                <td>指定补丁文件的位置。这在命令行上直接指定补丁文件时不是必须的。</td>
            </tr>
            <tr>
                <td><code>-d 目录</code></td>
                <td>指定工作目录。所有文件操作都将在该目录下进行。</td>
            </tr>

            </tbody>
        </table>
    </div>
</main>

</body>
</html>